#include "TreeItemGroup.h"
#include <QPainter>

TreeItemGroup::TreeItemGroup(QWidget *parent, Qt::WindowFlags f)
    : QWidget(parent, f)
    , _curWheelValue(0)
    , _curDialValue(50.0)
    , _minDialValue(0)
    , _maxDialValue(5000)
    , _dialGap(6)
    , _isDragging(false)
    , _reckText(0, 0, 230, 30)
    , _textSideGap(5)
{
    this->setFixedHeight(_reckText.height());
    this->setMinimumWidth(800);
}

TreeItemGroup::~TreeItemGroup()
{

}

void TreeItemGroup::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);

    QPainter painter(this);

    painter.setRenderHint(QPainter::Antialiasing, true);    // 反走样

    /* 绘制矩形 */
    painter.setPen(QPen(QColor("darkmagenta"), 3));    // 设置画笔颜色、宽度
    painter.setBrush(QColor("darkmagenta"));  // 设置画刷颜色 //darkmagenta	#8B008B	139,0,139
    painter.drawRect(_reckText);

    /* 绘制文本 当前时间 */
    painter.setPen(QColor("white")); // 设置画笔颜色
    QFont font; // 设置字体：微软雅黑、点大小50、斜体
//    font.setFamily("Microsoft YaHei");
    font.setPointSize(13);
    painter.setFont(font);
    painter.drawText(QRect(_reckText.x() + _textSideGap, _reckText.y(), _reckText.width(), _reckText.height()),
                     Qt::AlignLeft | Qt::AlignVCenter, QStringLiteral("模型组"));

    /* 绘制刻度底色为白色 */
    painter.setPen(QPen(QColor("white"), 3));    // 设置画笔颜色、宽度
    painter.setBrush(QColor("white"));  // 设置画刷颜色
    painter.drawRect(QRect(_reckText.x()+_reckText.width(), _reckText.y(), this->width(), this->height()));

    /* 绘制刻度线 */
    painter.setPen(QPen(QColor("lightgrey"), 1.8)); // lightgrey	#D3D3D3	211,211,211
    int xStartPos = _reckText.width() + _reckText.x(); // 刻度线开始位置
    int numScale = (this->width()- xStartPos) / _dialGap;
    for (int i = 0; i < numScale; ++i)
    {
        int xPos = xStartPos + i * _dialGap;
        int dialShow = i + _curWheelValue;
        if (dialShow > _maxDialValue)
        {
            break;
        }
        painter.drawLine(QPoint(xPos, _reckText.y()), QPoint(xPos, _reckText.height()));
    }

    /* 绘制滑块 */
    int curDialValue = _curDialValue;
    if (curDialValue >= _curWheelValue && curDialValue < _curWheelValue + numScale)
    {
        painter.setPen(QPen(QColor("red"), 1.8));    // 设置画笔颜色、宽度
        int xAdd = (curDialValue - _curWheelValue) * _dialGap;
        painter.drawLine(QPoint(xStartPos + xAdd , _reckText.y()), QPoint(xStartPos + xAdd, _reckText.height()));
    }

}
